Kubernetes权威指南 1.3案例部署¶
环境¶
[root@master1 ~]# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master1 Ready master 91m v1.15.4 192.168.252.79 <none> CentOS Linux 7 (Core) 4.4.195-1.el7.elrepo.x86_64 docker://19.3.2
node1 Ready <none> 89m v1.15.4 192.168.252.88 <none> CentOS Linux 7 (Core) 4.4.196-1.el7.elrepo.x86_64 docker://19.3.2
node2 Ready <none> 81m v1.15.4 192.168.252.89 <none> CentOS Linux 7 (Core) 4.4.196-1.el7.elrepo.x86_64 docker://19.3.2
创建mysql 服务¶
vim mysql-rc.yaml
apiVersion: v1
# 副本控制器RC
kind: ReplicationController
metadata:
# rc的名称, 全局唯一
name: mysql
spec:
# 期待创建的pod个数
replicas: 1
selector:
# 选择符合拥有此标签的pod
app: mysql
# 根据模板定义的信息创建pod
template:
metadata:
labels:
# pod 拥有的标签,对应上边 RC 的 selector
app: mysql
# 定义 Pod 细则
spec:
containers:
- name: mysql
image: mysql:5.7
# 容器应用监听的端口号
ports:
- containerPort: 3306
# 注入到容器中的环境变量
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
vim mysql-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
开始创建服务
kubectl apply -f myql-rc.yaml
kubectl apply -f myql-svc.yaml
创建 Tomcat 服务¶
vim myweb-rc.yml
apiVersion: v1
kind: ReplicationController
metadata:
name: myweb
spec:
replicas: 2
selector:
app: myweb
template:
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: kubeguide/tomcat-app:v1
ports:
- containerPort: 8080
env:
- name: MYSQL_SERVICE_HOST
value: 'mysql'
- name: MYSQL_SERVICE_PORT
value: '3306'
上面文件中已用了 MYSQL_SERVICE_HOST、MYSQL_SERVICE_PORT 环境变量,mysql正是上文中定义的 MySQL 服务名。
vim myweb-svc.yml
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30001
selector:
app: myweb
~
开始创建服务
kubectl apply -f myweb-rc.yaml
kubectl apply -f myweb-svc.yaml
验证¶
[root@master1 ~]# kubectl get pod,svc -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/mysql-mpqwv 1/1 Running 0 19m 172.32.2.5 node2 <none> <none>
pod/myweb-5fw65 1/1 Running 0 17m 172.32.2.6 node2 <none> <none>
pod/myweb-jn5xv 1/1 Running 0 17m 172.32.1.6 node1 <none> <none>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes ClusterIP 172.16.0.1 <none> 443/TCP 102m <none>
service/mysql ClusterIP 172.21.225.229 <none> 3306/TCP 39m app=mysql
service/myweb NodePort 172.25.154.78 <none> 8080:30001/TCP 32m app=myweb
浏览器访问 http://192.168.252.79:30001/demo/ 验证
参考文章¶
https://blog.csdn.net/wo18237095579/article/details/89376877